The roll out of Internet and the following continuous investment in infrastructure providing network access to the Internet have made information exchange easy throughout the globe. With the global access to all sorts of different computer systems the Internet provides for and the increasing use of the Internet, the numbers of data messages directed to central computer servers of the computer systems are increasing. Many computer systems are connected to the Internet to provide access to functionalities for a select group of people or for the public. Depending on the functionalities and the interest people have in accessing the functionalities, different computer systems receive different amounts of data messages.
An automated electronic exchange is one such type of computer system wherein users of the automated electronic exchange in one way or another connect to a central computer server which is part of the automated electronic exchange, usually through the Internet, and submit data messages to the central computer server.
Due to technological advances in computing technology, transaction technology and information technology in the past ten to twenty years, financial technology has had a very rapid development rate. This rapid development has resulted in computer systems trying to cope with increasing numbers of companies and people trying to connect to these systems. The increasing numbers of users being connected to electronic exchange systems have increased the amount of data messages sent into the system.
A conventional electronic exchange typically receives input data in the form of data messages from external devices, trader terminals, used by traders to send orders and/or quotes to the electronic exchange. The orders/quotes may relate to buying and/or selling of any type of tradable asset. In particular the input data can relate an order message that represents the placing of a new buy or sell order or a new quote. Furthermore, the development of algorithmic trading, i.e. computers programmed to analyze data and autonomously act on the data by submitting orders to an electronic exchange, has exponentially increased the amount of data messages being sent to the electronic exchange systems.
In order for computer systems to perform some kind of action in response to the data messages sent by users of the computer system the data messages have to be received in some kind of input/output device and detected as input.
Traditionally one way of detecting a data message input in a computer system has been to do it in an interrupt driven process. Input received by an input/output (I/O) device of the computer server of the computer system has triggered an interrupt request to be issued. A central processing unit (CPU) of the computer system typically breaks (interrupts) its current computations and stores the current state when receiving the interrupt request. The CPU then processes a set of stored instructions related to the specific interrupt request. When all instructions related to the interrupt request have been completed, the CPU reverts back to the stored state and continues processing the set of instructions it was processing prior to the interrupt request. The transition between states of processing in the CPU is typically called a context switch. When no interrupt request is received by the CPU, or when the CPU is finished with the current processing, the CPU can revert to an idle mode.
Another technique to detect input to a computer system is to have the CPU poll an I/O device for input, i.e. continuously check the I/O device until input is found, and then process the input when a poll renders input.
The interrupt driven detection and handling of input has the advantage that the CPU when not processing input can process other instructions. The polling technique has the advantage that input generally is detected and processed earlier as the CPU expects to find and is ready to process any input each poll (check) of the I/O device might render.
A disadvantage with the interrupt driven technique is that, when receiving huge amounts of data messages for computer systems requiring a high throughput, the interrupt driven process may be experienced as giving rise to a too high latency. Latency is defined as the time from an input data message is received by the computer system until the computer system has completed processing the data message and is ready receive a new data message. The interrupt driven techniques is therefore less suitable for systems with low latency requirements.
A disadvantage with the polling technique is that, while it allows for a low latency system, there is a risk that the CPU is constantly working at full load just polling the I/O device even at times when there is no input to retrieve. For most computer systems, the data messages do not arrive in a steady stream but the amount of data messages directed towards the computer system varies quite a lot over time with peaks and troughs. Thus while, the polling techniques are suitable for periods with peak load, polling for input is not particularly suitable for periods of trough load as large numbers of polls resulting in no input have to be performed, so-called negative polls. The negative polls of the polling techniques cause unnecessarily high processing load as well as energy consumption of the CPU.
For many computer systems a swift change in load is a problem, for automated electronic exchanges it is a particular problem. Since information is easily spread globally, many users of an automated electronic exchange tend to act on the same information at almost the same time. Therefore peaks often are concentrated around occasions when information, that in one way or another might change the appreciation made by users connected to the automated electronic exchange, is released somewhere in the world. The number of data messages directed toward the automated electronic exchanges, hence shifts very drastically between peaks and troughs throughout a trading day.
It would thus be advantageous to provide a more flexible and efficient way of processing input received in a computer system.